package com.eendtech.androidthreadtest.downTask;

import android.content.Context;
import android.os.AsyncTask;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by Seale on 2018.11.15
 * Author:Seale
 * Function: 异步下载任务
 **/
public class DownLoadTask extends AsyncTask<Void,Integer,Boolean> {

    private Context context;
    private TextView textView;

    //进行函数的构造
    public DownLoadTask(Context context, TextView textView) {
        this.context = context;
        this.textView = textView;
    }

    //这个方法会在后台任务开始执行之前调用,用于进行一些界面上的初始化操作,比如显示一个进度条对话框
    @Override
    protected void onPreExecute() {
        Toast.makeText(context,"任务进行下载",Toast.LENGTH_SHORT).show();
    }


    /**
     * 当任务执行完毕并通过return语句进行返回时,这个方法很快会被调用,返回的数据会作为参数传递到此方法中,
     * 可以利用返回的数据来进行一些UI操作,比如说提醒任务执行的结果以及关闭一些进度条对话框等
     * @param aBoolean
     */
    @Override
    protected void onPostExecute(Boolean aBoolean) {
        super.onPostExecute(aBoolean);
    }

    /**
     * 当后台任务中调用了publishProgress(Progress...)方法后,onProgressUpdate(Progress....)方法会很快被调用
     * 该方法中携带的参数就是在后台啊任务中传递过来的,在这个方法中可以对UI进行操作,
     * 利用参数中的数值就可以对界面元素进行相应的更新
     * @param values
     */

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
    }
    /**
     *这个方法中的所有代码都会在子线程中运行,我们应该在这里去处理所有的耗时任务,
     * 任务一旦完成就可以通过return语句来讲任务的执行结果返回
     * 特别注意的是这个方法是不可以进行UI操作的,如果需要更新UI元素
     * publishProgress(Progress...)方法来完成
     * @param voids
     */
    @Override
    protected Boolean doInBackground(Void... voids) {

        return null;
    }
}
